package timbap.visualizer.api.plugin.configuration;

import timbap.visualizer.api.context.PluginContext;
import timbap.visualizer.api.plugin.Plugin;
import timbap.visualizer.api.plugin.container.RootPlugin;

/**
 * The <code>PluginManager</code> is responsible for
 * reading the plugin configuration and providing
 * access to the root plugin and all other plugins.
 *
 * @author  Andreas Pabst
 * @see     timbap.visualizer.api.plugin.Plugin
 */
public interface PluginManager {

    /**
     * reads the plugin configuration using the specified context
     * 
     * @param pPluginContext	the context to use
     */
    public void readPluginConfiguration(PluginContext pPluginContext);

    /**
     * gets the root plugin
     * 
     * @return	the root plugin
     */
    public RootPlugin getRootPlugin();

    public Plugin getPlugin(Class pClass);

    public Plugin getPlugin(String pSimpleClassName);
}
